home *** CD-ROM | disk | FTP | other *** search
/ System Booster / System Booster.iso / SYS / s / FoldOberonProcs.wrx < prev    next >
Text File  |  1996-09-26  |  3KB  |  147 lines

  1. /*
  2.  * FoldOberoProgs.wrx V 1.0 © 1994 Tim Teulings
  3.  *
  4.  * Ein Script für den Texeditor WRITE ab V.3.508 © Tim Teulings
  5.  *
  6.  * Dieses Script faltet den Körper aller Oberon-Prozeduren (erster Level)
  7.  * weg.
  8.  * Dabei muß folgende Formatierung eingehalten werden :
  9.  *  - Das Keywort 'PROCEDURE' muß in der 3. Spalte anfangen.
  10.  *  - Das dazugehörige 'END <Prozedurname>'' muß sich ebenfalls in der
  11.  *    dritten Spalte befinden.
  12.  *
  13.  *  Dies kann allerdings durch ändern der Variablen HEADER und BODYEND
  14.  *  geändert werden.
  15.  *
  16.  *  Formatierungfehler führen möglicherweise dazu, daß Faltungen falsch
  17.  *  gesetzt werden.
  18.  */
  19.  
  20. OPTIONS RESULTS
  21.  
  22. IF ~show('P',"WRITE")
  23. THEN DO
  24.  say 'Dieses Script läuft nur, wenn WRITE bereits gestartet wurde !'
  25.  exit 10
  26. END
  27.  
  28. ADDRESS "WRITE"
  29.  
  30. 'VERSIONCHECK 3848 "FoldOberonProcs.wrx"'
  31. IF RC~=0 THEN DO
  32.   exit 10
  33. END
  34.  
  35. 'GETVAR "_CurrentID"'
  36. ID = RESULT           /* GETVAR gibt den ID des aktuellen Fenster zurück,  */
  37.                       /* der von den weiteren Befehlen benötigt wird.      */
  38.  
  39. IF ID=0 THEN DO
  40.   MESSAGEOK (Kein Fenster aktiviert !)
  41.   EXIT
  42. END
  43.  
  44. OPENPORT ID           /* PrivatePort des aktuellen Fensters öffnen        */
  45. Port = RESULT
  46.  
  47. IF Port="" THEN DO    /* 'OPENPORT' gibt "" zurück, wenn Port nicht       */
  48.                       /* geöffnet werden konnte                           */
  49.  
  50.   LOCKWINDOW ID       /* Fenster wird einfach gelockt                     */
  51. END
  52. ELSE DO
  53.   INTERPRET ADDRESS Port  /* PrivatePort addressieren. Alle Komandos          */
  54.                           /*beziehen sich nun auf das Fenster mit diesem Port */
  55. END
  56.  
  57. 'SILENT'                /* Silent-Mode wegen Geschwindigkeit               */
  58.  
  59. HEADER  = '  PROCEDURE'
  60. BODYEND = '  END'
  61.  
  62. 'GETVAR "_xPos"'        /* Cursorposition holen                            */
  63. OldPos.x = RESULT
  64. 'GETVAR "_yPos"'
  65. OldPos.y = RESULT
  66.  
  67. GOTO @SOT @SOT
  68.  
  69. SETVAR "(" || _FindString || ")" "(" || HEADER || ")"
  70. 'FIND @CURSOR @CURSOR @EOT @EOT {@SILENT @CASE}'
  71.  
  72. DO WHILE RC = 0
  73.  
  74.   'GETVAR "_xPos"'
  75.   xPos = RESULT
  76.   'GETVAR "_yPos"'
  77.   From = RESULT
  78.  
  79.   IF xPos=1 THEN DO
  80.  
  81. /*
  82.  * Die folgenden kommentierten Zeeilen matchen bei PROCEDURE .. END
  83.  * die Prozedurnamen, versagen allerdings bei Deklarationen des Types
  84.  * PROCEDURE ( sff : wee) <ProcName>
  85.  */
  86.  
  87. /*  'NEXTWORD NEXTWORD'
  88.     'GETVAR "_CurrentWord"'
  89.     PROCNAME = RESULT
  90.  
  91.     SETVAR "(" || _FindString || ")" "(" || BODYEND || " " || PROCNAME || ";" || ")"
  92.  
  93.     'FIND @CURSOR @CURSOR @EOT @EOT {@SILENT @CASE}'
  94.     IF RC=0 THEN DO
  95.       'GETVAR "_xPos"'
  96.       xPos = RESULT
  97.       'GETVAR "_yPos"'
  98.       TO = RESULT
  99.  
  100.       IF xPos=1 THEN DO
  101.         Fold From+1 To
  102.       END
  103.     END */
  104.  
  105. /* Alternativlösung */
  106.  
  107.     SETVAR "(" || _FindString || ")" "(" || BODYEND || ")"
  108.     'FIND @CURSOR @CURSOR @EOT @EOT {@SILENT @CASE}'
  109.     RES = RC
  110.     'GETVAR "_xPos"'
  111.     xPos = RESULT
  112.  
  113.     DO WHILE  RES = 0 & xPos~=1
  114.       'FIND @CURSOR @CURSOR @EOT @EOT {@SILENT @CASE}'
  115.       RES = RC
  116.       'GETVAR "_xPos"'
  117.       xPos = RESULT
  118.     END;
  119.  
  120.     IF RES = 0 THEN DO
  121.       'GETVAR "_YPos"'
  122.       To = RESULT
  123.  
  124.       Fold From+1 To
  125.     END
  126.  
  127. /* Ende der Alternativlösung */
  128.  
  129.   END
  130.  
  131.   SETVAR "(" || _FindString || ")" "(" || HEADER || ")"
  132.   FIND 1 From+1 '@EOT @EOT {@SILENT @CASE}'
  133. END
  134.  
  135. GOTO OldPos.x OldPos.y
  136.  
  137. WINDOW 0 0 0 0          /* Silent-Mode wieder ausschalten                  */
  138.  
  139. "MESSAGEOK (REXX-Script\n'FoldOberonProc.wrx'\n\nFertig !)"
  140.  
  141. IF Port="" THEN DO
  142.   LOCKWINDOW 0
  143. END
  144. ELSE DO
  145.   CLOSEPORT ID
  146. END
  147.